package com.xunyin.modules.mtstore.service;

import com.xunyin.common.service.BaseService;
import com.xunyin.modules.mtstore.domain.MtStore;
import com.xunyin.modules.mtstore.service.dto.StoreDto;
import com.xunyin.pagination.PaginationRequest;
import com.xunyin.pagination.PaginationResponse;

import java.util.List;
import java.util.Map;

/**
 * 店铺业务接口
 * <p>
 * Created by xunyinyunshang <3594419785@qq.com>
 * CopyRight 讯音云商 https://www.tonetn.com
 */
public interface StoreService extends BaseService<MtStore> {

    /**
     * 分页查询店铺列表
     *
     * @param paginationRequest
     * @return
     */
    PaginationResponse<MtStore> queryStoreListByPagination(PaginationRequest paginationRequest);

    /**
     * 保存店铺信息
     *
     * @param reqStoreDto
     */
    MtStore saveStore(StoreDto reqStoreDto);

    /**
     * 获取系统默认店铺
     */
    MtStore getDefaultStore();

    /**
     * 根据店铺ID获取店铺信息
     *
     * @param id 店铺ID
     */
    MtStore queryStoreById(Integer id);

    /**
     * 根据店铺id列表获取店铺信息
     *
     * @param ids 店铺ID列表
     */
    List<MtStore> queryStoresByIds(List<Integer> ids);

    /**
     * 根据店铺名称获取店铺信息
     *
     * @param storeName 店铺名称
     */
    StoreDto queryStoreByName(String storeName);

    /**
     * 根据店铺ID查询店铺信息
     *
     * @param id 店铺ID
     * @return
     */
    StoreDto queryStoreDtoById(Integer id);

    /**
     * 更新店铺状态
     *
     * @param id       店铺ID
     * @param operator 操作人
     * @param status   状态
     */
    void updateStatus(Integer id, String operator, String status);

    /**
     * 根据条件查询店铺
     */
    List<MtStore> queryStoresByParams(Map<String, Object> params);

    /**
     * 根据距离查找店铺
     *
     * @param latitude
     * @param longitude
     * @return
     */
    List<MtStore> queryByDistance(String keyword, String latitude, String longitude);

    MtStore saveInstr(StoreDto storeDto);

    List<MtStore> getMtStoreList(Map<String, Object> params);
}
